In a variety of data processing applications, a plurality of asynchronous tasks or processes are executed, concurrently, whether in a single processor or multiprocessor system. In some instances, a plurality of tasks or processes access and modify common state data.
The term, "object," as used herein, refers to a collection of state data. The state data of an object consists of one or more related attributes, each having distinct values. In the course of executing asynchronous tasks, each task may modify state data corresponding to a number of data objects.
Traditionally, when a computer program or routine was initiated, the user or calling program provided parameters and task information that are needed before the program or routine could fully execute the request. The process of defining every attribute for each object before beginning any of the tasks could be undesirable, however, as difficult or inefficient. One known technique to allow sharing of state data was the use of a system of locks. A process would apply locks against other processes, so that only the process holding the lock would read or write information from or to the locked object.
U.S. Pat. No. 5,063,503 describes apparatus for controlling concurrent process operations. The apparatus responds to a process request, for selectively locking an entity, by locking the entity and entities on which the locked entity is dependent. A tree structure is used. A list of ancestral nodes is generated. Compatibility of the requested lock with the lock status of each ancestral node is determined. An intermediate lock is applied to each appropriate ancestral node.
Prior art locking systems often result in delays, as one process waits for another process to remove a lock. A more responsive system is desired, based on a simple, flexible model.